%% -*- mode: erlang; -*-
[ %% Check undefined_function_calls
  #{ name => undefined_function_calls
   , analysis => undefined_function_calls
   , excl_apps =>
         [ observer
         , redbug
         ]
   , excl_mods =>
         [ hipe_unified_loader
         , systools_make
         , systools
         , systools_relup
         , basho_bench_driver_erldis
         , release_handler
         , cuttlefish_rebar_plugin
         ]
   , filters =>
         [{{coap_client,channel_apply,3},{coap_dtls_socket,close,1}},
          {{coap_client,channel_apply,3},{coap_dtls_socket,connect,2}},
          {{coap_client,channel_apply,3},{coap_udp_socket,close,1}},
          {{coap_client,channel_apply,3},{coap_udp_socket,get_channel,2}},
          {{coap_client,channel_apply,3},{coap_udp_socket,start_link,0}},
          {{coap_client,test,0},{eunit,test,1}},
          {{coap_core_link,test,0},{eunit,test,1}},
          {{coap_message_parser,test,0},{eunit,test,1}},
          {{coap_observer,init,1},{coap_dtls_socket,connect,2}},
          {{coap_observer,init,1},{coap_udp_socket,get_channel,2}},
          {{coap_observer,init,1},{coap_udp_socket,start_link,0}},
          {{coap_observer,terminate,2},{coap_dtls_socket,close,1}},
          {{coap_observer,terminate,2},{coap_udp_socket,close,1}},

          %% Exclude hipe which is disabled
          {{code,beam_file_native_md5,2},{hipe_unified_loader,chunk_name,1}},
          {{code,get_native_fun,0},{hipe_unified_loader,chunk_name,1}},
          {{code,load_native_code_for_all_loaded,1},
           {hipe_unified_loader,chunk_name,1}},
          {{code_server,handle_call,3},{hipe_unified_loader,load,3}},
          {{code_server,handle_call,3},{hipe_unified_loader,load_module,4}},
          {{code_server,try_load_module_2,6},
           {hipe_unified_loader,load_native_code,3}},
          {{compile,embed_native_code,2},{hipe_unified_loader,chunk_name,1}},
          {{compile,native_compile_1,2},{hipe,compile,4}},


          {{core_link,test,0},{eunit,test,1}},
          {{emqx_misc,ipv6_probe,1},{gen_tcp,ipv6_probe,0}},
          {{eredis_parser,test,0},{eunit,test,1}},
          {{gen_rpc_driver_ssl,authenticate_client,3},
           {ssl_verify_hostname,verify_cert_hostname,2}},
          {{gen_rpc_driver_ssl,merge_ssl_options,2},
           {ssl_verify_hostname,verify_fun,3}},
          {{gproc_dist,from_leader,3},{gen_leader,leader_cast,2}},
          {{gproc_dist,handle_call,4},{gen_leader,leader_node,1}},
          {{gproc_dist,handle_leader_cast,3},{gen_leader,alive,1}},
          {{gproc_dist,handle_leader_cast,3},{gen_leader,broadcast,3}},
          {{gproc_dist,initiate_sync,3},{gen_leader,alive,1}},
          {{gproc_dist,initiate_sync,3},{gen_leader,broadcast,3}},
          {{gproc_dist,leader_call,1},{gen_leader,leader_call,2}},
          {{gproc_dist,leader_cast,1},{gen_leader,leader_cast,2}},
          {{gproc_dist,send_sync_complete,3},{gen_leader,broadcast,3}},
          {{gproc_dist,start_link,1},{gen_leader,start_link,6}},
          {{inets_ftp_wrapper,start_service,1},{ftp,start_service,1}},
          {{inets_ftp_wrapper,start_standalone,1},{ftp,start_standalone,1}},
          {{inets_ftp_wrapper,stop_service,1},{ftp,stop_service,1}},
          {{inets_tftp_wrapper,start_service,1},{tftp,start_service,1}},
          {{inets_tftp_wrapper,start_standalone,1},{tftp,start_standalone,1}},
          {{inets_tftp_wrapper,stop_service,1},{tftp,stop_service,1}},
          {{jose_chacha20_poly1305_libsodium,authenticate,3},
           {libsodium_crypto_onetimeauth_poly1305,crypto_onetimeauth_poly1305,2}},
          {{jose_chacha20_poly1305_libsodium,decrypt,5},
           {libsodium_crypto_aead_chacha20poly1305,ietf_decrypt_detached,5}},
          {{jose_chacha20_poly1305_libsodium,encrypt,4},
           {libsodium_crypto_aead_chacha20poly1305,ietf_encrypt_detached,4}},
          {{jose_chacha20_poly1305_libsodium,one_time_key,2},
           {libsodium_crypto_stream_chacha20,ietf_xor_ic,4}},
          {{jose_chacha20_poly1305_libsodium,verify,4},
           {libsodium_crypto_onetimeauth_poly1305,verify,3}},
          {{jose_curve25519_libdecaf,ed25519_sign,2},
           {libdecaf_curve25519,ed25519_sign,2}},
          {{jose_curve25519_libdecaf,ed25519_verify,3},
           {libdecaf_curve25519,ed25519_verify,3}},
          {{jose_curve25519_libdecaf,ed25519ph_sign,2},
           {libdecaf_curve25519,ed25519ph_sign,2}},
          {{jose_curve25519_libdecaf,ed25519ph_verify,3},
           {libdecaf_curve25519,ed25519ph_verify,3}},
          {{jose_curve25519_libdecaf,eddsa_keypair,0},
           {libdecaf_curve25519,eddsa_keypair,0}},
          {{jose_curve25519_libdecaf,eddsa_keypair,1},
           {libdecaf_curve25519,eddsa_keypair,1}},
          {{jose_curve25519_libdecaf,eddsa_secret_to_public,1},
           {libdecaf_curve25519,eddsa_secret_to_pk,1}},
          {{jose_curve25519_libdecaf,x25519_keypair,0},
           {libdecaf_curve25519,x25519_keypair,0}},
          {{jose_curve25519_libdecaf,x25519_keypair,1},
           {libdecaf_curve25519,x25519_keypair,1}},
          {{jose_curve25519_libdecaf,x25519_secret_to_public,1},
           {libdecaf_curve25519,x25519,1}},
          {{jose_curve25519_libdecaf,x25519_shared_secret,2},
           {libdecaf_curve25519,x25519,2}},
          {{jose_curve25519_libsodium,ed25519_sign,2},
           {libsodium_crypto_sign_ed25519,detached,2}},
          {{jose_curve25519_libsodium,ed25519_verify,3},
           {libsodium_crypto_sign_ed25519,verify_detached,3}},
          {{jose_curve25519_libsodium,ed25519ph_sign,2},
           {libsodium_crypto_hash_sha512,crypto_hash_sha512,1}},
          {{jose_curve25519_libsodium,ed25519ph_verify,3},
           {libsodium_crypto_hash_sha512,crypto_hash_sha512,1}},
          {{jose_curve25519_libsodium,eddsa_keypair,0},
           {libsodium_crypto_sign_ed25519,keypair,0}},
          {{jose_curve25519_libsodium,eddsa_keypair,1},
           {libsodium_crypto_sign_ed25519,seed_keypair,1}},
          {{jose_curve25519_libsodium,eddsa_secret_to_public,1},
           {libsodium_crypto_sign_ed25519,seed_keypair,1}},
          {{jose_curve25519_libsodium,x25519_keypair,0},
           {libsodium_crypto_box_curve25519xsalsa20poly1305,keypair,0}},
          {{jose_curve25519_libsodium,x25519_secret_to_public,1},
           {libsodium_crypto_scalarmult_curve25519,base,1}},
          {{jose_curve25519_libsodium,x25519_shared_secret,2},
           {libsodium_crypto_scalarmult_curve25519,crypto_scalarmult_curve25519,2}},
          {{jose_curve448_libdecaf,ed448_sign,2},{libdecaf_curve448,ed448_sign,2}},
          {{jose_curve448_libdecaf,ed448_sign,3},{libdecaf_curve448,ed448_sign,3}},
          {{jose_curve448_libdecaf,ed448_verify,3},
           {libdecaf_curve448,ed448_verify,3}},
          {{jose_curve448_libdecaf,ed448_verify,4},
           {libdecaf_curve448,ed448_verify,4}},
          {{jose_curve448_libdecaf,ed448ph_sign,2},
           {libdecaf_curve448,ed448ph_sign,2}},
          {{jose_curve448_libdecaf,ed448ph_sign,3},
           {libdecaf_curve448,ed448ph_sign,3}},
          {{jose_curve448_libdecaf,ed448ph_verify,3},
           {libdecaf_curve448,ed448ph_verify,3}},
          {{jose_curve448_libdecaf,ed448ph_verify,4},
           {libdecaf_curve448,ed448ph_verify,4}},
          {{jose_curve448_libdecaf,eddsa_keypair,0},
           {libdecaf_curve448,eddsa_keypair,0}},
          {{jose_curve448_libdecaf,eddsa_keypair,1},
           {libdecaf_curve448,eddsa_keypair,1}},
          {{jose_curve448_libdecaf,eddsa_secret_to_public,1},
           {libdecaf_curve448,eddsa_secret_to_pk,1}},
          {{jose_curve448_libdecaf,x448_keypair,0},
           {libdecaf_curve448,x448_keypair,0}},
          {{jose_curve448_libdecaf,x448_keypair,1},
           {libdecaf_curve448,x448_keypair,1}},
          {{jose_curve448_libdecaf,x448_secret_to_public,1},
           {libdecaf_curve448,x448,1}},
          {{jose_curve448_libdecaf,x448_shared_secret,2},{libdecaf_curve448,x448,2}},
          {{jose_json_jason,decode,1},{'Elixir.Jason','decode!',1}},
          {{jose_json_jason,encode,1},{'Elixir.Jason','encode!',1}},
          {{jose_json_jsone,decode,1},{jsone,decode,1}},
          {{jose_json_jsone,encode,1},{jsone,encode,2}},
          {{jose_json_jsx,decode,1},{jsx,decode,2}},
          {{jose_json_jsx,encode,1},{jsx,encode,1}},
          {{jose_json_ojson,decode,1},{ojson,'decode!',1}},
          {{jose_json_ojson,encode,1},{ojson,'encode!',1}},
          {{jose_json_poison,decode,1},{'Elixir.Poison','decode!',1}},
          {{jose_json_poison,encode,1},{'Elixir.Poison','encode!',1}},
          {{jose_json_poison_compat_encoder,decode,1},{'Elixir.Poison','decode!',1}},
          {{jose_json_poison_compat_encoder,encode,1},
           {'Elixir.IO',iodata_to_binary,1}},
          {{jose_json_poison_compat_encoder,lexical_encode,1},
           {'Elixir.Poison.EncodeError',exception,1}},
          {{jose_json_poison_compat_encoder,lexical_encode,1},
           {'Elixir.Poison.Encoder.Atom',encode,2}},
          {{jose_json_poison_compat_encoder,lexical_encode,1},
           {'Elixir.Poison.Encoder.BitString',encode,2}},
          {{jose_json_poison_compat_encoder,lexical_encode,1},
           {'Elixir.Poison.Encoder.Float',encode,2}},
          {{jose_json_poison_compat_encoder,lexical_encode,1},
           {'Elixir.Poison.Encoder.Integer',encode,2}},
          {{jose_json_poison_compat_encoder,lexical_encode_map,1},
           {'Elixir.Poison.Encoder.BitString',encode,2}},
          {{jose_json_poison_compat_encoder,lexical_encode_name,1},
           {'Elixir.Atom',to_string,1}},
          {{jose_json_poison_compat_encoder,lexical_encode_name,1},
           {'Elixir.Kernel',inspect,1}},
          {{jose_json_poison_compat_encoder,lexical_encode_name,1},
           {'Elixir.Poison.EncodeError',exception,1}},
          {{jose_json_poison_compat_encoder,lexical_encode_struct,2},
           {'Elixir.Enum',flat_map,2}},
          {{jose_json_poison_compat_encoder,lexical_encode_struct,2},
           {'Elixir.HashDict',size,1}},
          {{jose_json_poison_compat_encoder,lexical_encode_struct,2},
           {'Elixir.Map',from_struct,1}},
          {{jose_json_poison_compat_encoder,lexical_encode_struct,2},
           {'Elixir.Poison.Encoder.BitString',encode,2}},
          {{jose_json_poison_lexical_encoder,decode,1},
           {'Elixir.Poison','decode!',1}},
          {{jose_json_poison_lexical_encoder,encode,1},
           {'Elixir.JOSE.Poison','lexical_encode!',1}},
          {{jose_jwk_kty_rsa,try_generate_key,3},{cutkey,rsa,3}},
          {{jose_sha3_keccakf1600_driver,sha3_224,1},
           {keccakf1600_fips202,sha3_224,1}},
          {{jose_sha3_keccakf1600_driver,sha3_256,1},
           {keccakf1600_fips202,sha3_256,1}},
          {{jose_sha3_keccakf1600_driver,sha3_384,1},
           {keccakf1600_fips202,sha3_384,1}},
          {{jose_sha3_keccakf1600_driver,sha3_512,1},
           {keccakf1600_fips202,sha3_512,1}},
          {{jose_sha3_keccakf1600_driver,shake128,2},
           {keccakf1600_fips202,shake128,2}},
          {{jose_sha3_keccakf1600_driver,shake256,2},
           {keccakf1600_fips202,shake256,2}},
          {{jose_sha3_keccakf1600_nif,sha3_224,1},{keccakf1600,hash,2}},
          {{jose_sha3_keccakf1600_nif,sha3_256,1},{keccakf1600,hash,2}},
          {{jose_sha3_keccakf1600_nif,sha3_384,1},{keccakf1600,hash,2}},
          {{jose_sha3_keccakf1600_nif,sha3_512,1},{keccakf1600,hash,2}},
          {{jose_sha3_keccakf1600_nif,shake128,2},{keccakf1600,hash,3}},
          {{jose_sha3_keccakf1600_nif,shake256,2},{keccakf1600,hash,3}},
          {{jose_sha3_libdecaf,sha3_224,1},{libdecaf_sha3,hash,2}},
          {{jose_sha3_libdecaf,sha3_256,1},{libdecaf_sha3,hash,2}},
          {{jose_sha3_libdecaf,sha3_384,1},{libdecaf_sha3,hash,2}},
          {{jose_sha3_libdecaf,sha3_512,1},{libdecaf_sha3,hash,2}},
          {{jose_sha3_libdecaf,shake128,2},{libdecaf_sha3,hash,3}},
          {{jose_sha3_libdecaf,shake256,2},{libdecaf_sha3,hash,3}},
          {{lwm2m_coap_client,channel_apply,3},{lwm2m_coap_dtls_socket,close,1}},
          {{lwm2m_coap_client,channel_apply,3},{lwm2m_coap_dtls_socket,connect,2}},
          {{lwm2m_coap_client,channel_apply,3},{lwm2m_coap_udp_socket,close,1}},
          {{lwm2m_coap_client,channel_apply,3},
           {lwm2m_coap_udp_socket,get_channel,2}},
          {{lwm2m_coap_client,channel_apply,3},{lwm2m_coap_udp_socket,start_link,0}},
          {{lwm2m_coap_client,test,0},{eunit,test,1}},
          {{lwm2m_coap_message_parser,test,0},{eunit,test,1}},
          {{lwm2m_coap_observer,init,1},{lwm2m_coap_dtls_socket,connect,2}},
          {{lwm2m_coap_observer,init,1},{lwm2m_coap_udp_socket,get_channel,2}},
          {{lwm2m_coap_observer,init,1},{lwm2m_coap_udp_socket,start_link,0}},
          {{lwm2m_coap_observer,terminate,2},{lwm2m_coap_dtls_socket,close,1}},
          {{lwm2m_coap_observer,terminate,2},{lwm2m_coap_udp_socket,close,1}},
          {{ranch_app,consider_profiling,0},{eprof,start,0}},
          {{ranch_app,consider_profiling,0},{eprof,start_profiling,1}},
          {{ranch_app,profile_output,0},{eprof,analyze,1}},
          {{ranch_app,profile_output,0},{eprof,log,1}},
          {{ranch_app,profile_output,0},{eprof,stop_profiling,0}}
         ]
   }

  %% Check undefined_functions
, #{ name => undefined_functions
   , analysis => undefined_functions
   , excl_apps =>
         [ observer
         ]
   , excl_mods =>
         [ systools
         , systools_make
         , release_handler
         , systools_relup
         , cuttlefish_rebar_plugin
         ]
   , filters =>
         [{'Elixir.Atom',to_string,1},
          {'Elixir.Enum',flat_map,2},
          {'Elixir.HashDict',size,1},
          {'Elixir.IO',iodata_to_binary,1},
          {'Elixir.JOSE.Poison','lexical_encode!',1},
          {'Elixir.Jason','decode!',1},
          {'Elixir.Jason','encode!',1},
          {'Elixir.Kernel',inspect,1},
          {'Elixir.Map',from_struct,1},
          {'Elixir.Poison','decode!',1},
          {'Elixir.Poison','encode!',1},
          {'Elixir.Poison.EncodeError',exception,1},
          {'Elixir.Poison.Encoder.Atom',encode,2},
          {'Elixir.Poison.Encoder.BitString',encode,2},
          {'Elixir.Poison.Encoder.Float',encode,2},
          {'Elixir.Poison.Encoder.Integer',encode,2},
          {coap_dtls_socket,close,1},
          {coap_dtls_socket,connect,2},
          {coap_udp_socket,close,1},
          {coap_udp_socket,get_channel,2},
          {coap_udp_socket,start_link,0},
          {ct_slave,start,2},
          {ct_slave,stop,1},
          {cutkey,rsa,3},
          {eprof,analyze,1},
          {eprof,log,1},
          {eprof,start,0},
          {eprof,start_profiling,1},
          {eprof,stop_profiling,0},
          {erldis,mget,2},
          {erldis,set,3},
          {erldis_client,connect,0},
          {et_collector,iterate,5},
          {et_collector,report,2},
          {et_selector,parse_event,2},
          {et_viewer,get_collector_pid,1},
          {et_viewer,start_link,1},
          {eunit,test,1},
          {ftp,start_service,1},
          {ftp,start_standalone,1},
          {ftp,stop_service,1},
          {gen_leader,alive,1},
          {gen_leader,broadcast,3},
          {gen_leader,leader_call,2},
          {gen_leader,leader_cast,2},
          {gen_leader,leader_node,1},
          {gen_leader,start_link,6},
          {gen_tcp,ipv6_probe,0},

          %% We dont use hipes
          {hipe,compile,4},
          {hipe_bifs,add_ref,2},
          {hipe_bifs,alloc_data,3},
          {hipe_bifs,alloc_loader_state,1},
          {hipe_bifs,atom_to_word,1},
          {hipe_bifs,bif_address,3},
          {hipe_bifs,check_crc,1},
          {hipe_bifs,commit_patch_load,1},
          {hipe_bifs,enter_code,3},
          {hipe_bifs,enter_sdesc,2},
          {hipe_bifs,find_na_or_make_stub,1},
          {hipe_bifs,fun_to_address,1},
          {hipe_bifs,get_fe,2},
          {hipe_bifs,merge_term,1},
          {hipe_bifs,patch_call,3},
          {hipe_bifs,patch_insn,3},
          {hipe_bifs,primop_address,1},
          {hipe_bifs,set_funinfo_native_address,3},
          {hipe_bifs,set_native_address,3},
          {hipe_bifs,set_native_address_in_fe,2},
          {hipe_bifs,term_to_word,1},
          {hipe_bifs,write_u32,2},
          {hipe_bifs,write_u64,2},
          {hipe_bifs,write_u8,2},


          {jsone,decode,1},
          {jsone,encode,2},
          {jsx,decode,2},
          {jsx,encode,1},
          {keccakf1600,hash,2},
          {keccakf1600,hash,3},
          {keccakf1600_fips202,sha3_224,1},
          {keccakf1600_fips202,sha3_256,1},
          {keccakf1600_fips202,sha3_384,1},
          {keccakf1600_fips202,sha3_512,1},
          {keccakf1600_fips202,shake128,2},
          {keccakf1600_fips202,shake256,2},
          {libdecaf_curve25519,ed25519_sign,2},
          {libdecaf_curve25519,ed25519_verify,3},
          {libdecaf_curve25519,ed25519ph_sign,2},
          {libdecaf_curve25519,ed25519ph_verify,3},
          {libdecaf_curve25519,eddsa_keypair,0},
          {libdecaf_curve25519,eddsa_keypair,1},
          {libdecaf_curve25519,eddsa_secret_to_pk,1},
          {libdecaf_curve25519,x25519,1},
          {libdecaf_curve25519,x25519,2},
          {libdecaf_curve25519,x25519_keypair,0},
          {libdecaf_curve25519,x25519_keypair,1},
          {libdecaf_curve448,ed448_sign,2},
          {libdecaf_curve448,ed448_sign,3},
          {libdecaf_curve448,ed448_verify,3},
          {libdecaf_curve448,ed448_verify,4},
          {libdecaf_curve448,ed448ph_sign,2},
          {libdecaf_curve448,ed448ph_sign,3},
          {libdecaf_curve448,ed448ph_verify,3},
          {libdecaf_curve448,ed448ph_verify,4},
          {libdecaf_curve448,eddsa_keypair,0},
          {libdecaf_curve448,eddsa_keypair,1},
          {libdecaf_curve448,eddsa_secret_to_pk,1},
          {libdecaf_curve448,x448,1},
          {libdecaf_curve448,x448,2},
          {libdecaf_curve448,x448_keypair,0},
          {libdecaf_curve448,x448_keypair,1},
          {libdecaf_sha3,hash,2},
          {libdecaf_sha3,hash,3},
          {libsodium_crypto_aead_chacha20poly1305,ietf_decrypt_detached,5},
          {libsodium_crypto_aead_chacha20poly1305,ietf_encrypt_detached,4},
          {libsodium_crypto_box_curve25519xsalsa20poly1305,keypair,0},
          {libsodium_crypto_hash_sha512,crypto_hash_sha512,1},
          {libsodium_crypto_onetimeauth_poly1305,crypto_onetimeauth_poly1305,2},
          {libsodium_crypto_onetimeauth_poly1305,verify,3},
          {libsodium_crypto_scalarmult_curve25519,base,1},
          {libsodium_crypto_scalarmult_curve25519,crypto_scalarmult_curve25519,2},
          {libsodium_crypto_sign_ed25519,detached,2},
          {libsodium_crypto_sign_ed25519,keypair,0},
          {libsodium_crypto_sign_ed25519,seed_keypair,1},
          {libsodium_crypto_sign_ed25519,verify_detached,3},
          {libsodium_crypto_stream_chacha20,ietf_xor_ic,4},
          {lwm2m_coap_dtls_socket,close,1},
          {lwm2m_coap_dtls_socket,connect,2},
          {lwm2m_coap_udp_socket,close,1},
          {lwm2m_coap_udp_socket,get_channel,2},
          {lwm2m_coap_udp_socket,start_link,0},
          {ojson,'decode!',1},
          {ojson,'encode!',1},
          {ssl_verify_hostname,verify_cert_hostname,2},
          {ssl_verify_hostname,verify_fun,3},
          {tftp,start_service,1},
          {tftp,start_standalone,1},
          {tftp,stop_service,1},

          %% Xref could not check itself
          {xref,add_application,3},
          {xref,analyze,2},
          {xref,set_default,3},
          {xref,set_library_path,2},
          {xref,start,2},
          {xref,stop,1}
         ]
   }

, #{ name => locals_not_used
   , analysis => locals_not_used
   , excl_apps =>
         [
         ]
   , excl_mods =>
         [
         ]
   , filters =>
         [{coap_core_link_parser,return_error,2},
          {core_link_parser,return_error,2},
          {emqx_exhook_pb,e_type_double,3},
          {emqx_exhook_pb,e_type_fixed32,3},
          {emqx_exhook_pb,e_type_fixed64,3},
          {emqx_exhook_pb,e_type_float,3},
          {emqx_exhook_pb,e_type_int32,3},
          {emqx_exhook_pb,e_type_int64,3},
          {emqx_exhook_pb,e_type_sfixed32,3},
          {emqx_exhook_pb,e_type_sfixed64,3},
          {emqx_exhook_pb,e_type_sint,3},
          {emqx_exhook_pb,m_overwrite,3},
          {emqx_exhook_pb,v_ok,3},
          {emqx_exproto_pb,e_type_bool,3},
          {emqx_exproto_pb,e_type_double,3},
          {emqx_exproto_pb,e_type_fixed32,3},
          {emqx_exproto_pb,e_type_fixed64,3},
          {emqx_exproto_pb,e_type_float,3},
          {emqx_exproto_pb,e_type_int32,3},
          {emqx_exproto_pb,e_type_int64,3},
          {emqx_exproto_pb,e_type_sfixed32,3},
          {emqx_exproto_pb,e_type_sfixed64,3},
          {emqx_exproto_pb,e_type_sint,3},
          {emqx_exproto_pb,m_overwrite,3},
          {emqx_exproto_pb,v_ok,3},
          {grpc_health_pb,cons,3},
          {grpc_health_pb,e_type_bool,3},
          {grpc_health_pb,e_type_bytes,3},
          {grpc_health_pb,e_type_double,3},
          {grpc_health_pb,e_type_fixed32,3},
          {grpc_health_pb,e_type_fixed64,3},
          {grpc_health_pb,e_type_float,3},
          {grpc_health_pb,e_type_int32,3},
          {grpc_health_pb,e_type_int64,3},
          {grpc_health_pb,e_type_sfixed32,3},
          {grpc_health_pb,e_type_sfixed64,3},
          {grpc_health_pb,e_type_sint,3},
          {grpc_health_pb,e_varint,3},
          {grpc_health_pb,'erlang_++',3},
          {grpc_health_pb,lists_reverse,2},
          {grpc_health_pb,m_overwrite,3},
          {grpc_health_pb,v_ok,3},
          {grpc_reflection_pb,e_type_bool,3},
          {grpc_reflection_pb,e_type_double,3},
          {grpc_reflection_pb,e_type_fixed32,3},
          {grpc_reflection_pb,e_type_fixed64,3},
          {grpc_reflection_pb,e_type_float,3},
          {grpc_reflection_pb,e_type_int64,3},
          {grpc_reflection_pb,e_type_sfixed32,3},
          {grpc_reflection_pb,e_type_sfixed64,3},
          {grpc_reflection_pb,e_type_sint,3},
          {grpc_reflection_pb,e_varint,3},
          {grpc_reflection_pb,m_overwrite,3},
          {grpc_reflection_pb,v_ok,3},
          {prometheus_text_format,escape_metric_help,1},

          %%
          %% To be used in grammar files to throw an error message to the parser
          %% toplevel. Doesn't have to be exported!
          %%
          {redbug_parser,return_error,2},
          {rulesql,return_error,2},
          {xmerl_b64Bin,return_error,2},
          {xmerl_xpath_parse,return_error,2}]
   }

, #{ name => deprecated_function_calls
   , analysis => deprecated_function_calls
   , excl_apps =>
         [
         ]
   , excl_mods =>
         [
         ]
   , filters =>
         [{{coap_core_link,join_uri,1},{http_uri,encode,1}},
          {{disk_log_server,dist_pids,1},{pg2,get_members,1}},
          {{disk_log_server,do_accessible_logs,0},{pg2,which_groups,0}},
          {{disk_log_server,do_get_log_pids,1},{pg2,get_members,1}},
          {{disk_log_server,do_open,3},{pg2,create,1}},
          {{disk_log_server,erase_log,2},{pg2,leave,2}},
          {{disk_log_server,handle_info,2},{pg2,join,2}},
          {{gen_fsm,error_info,7},{gen_fsm,format_log,1}},
          {{gen_fsm,error_info,7},{gen_fsm,format_log,2}},
          {{gen_fsm,handle_msg,8},{gen_fsm,format_log,1}},
          {{gen_fsm,handle_msg,8},{gen_fsm,format_log,2}},
          {{httpd_util,decode_hex,1},{http_uri,decode,1}},
          {{httpd_util,encode_hex,1},{http_uri,encode,1}},
          {{igor,tidy,2},{erl_tidy,module,2}},
          {{lwm2m_coap_client,make_segment,1},{http_uri,decode,1}},
          {{lwm2m_coap_client,resolve_uri,1},{http_uri,parse,2}},
          {{lwm2m_coap_responder,cancel_observer,2},{pg2,delete,1}},
          {{lwm2m_coap_responder,cancel_observer,2},{pg2,get_members,1}},
          {{lwm2m_coap_responder,cancel_observer,2},{pg2,leave,2}},
          {{lwm2m_coap_responder,handle_observe,4},{pg2,create,1}},
          {{lwm2m_coap_responder,handle_observe,4},{pg2,join,2}},
          {{lwm2m_coap_responder,notify,2},{pg2,get_members,1}},
          {{public_key,ssh_hostkey_fingerprint,1},{public_key,ssh_encode,2}},
          {{public_key,ssh_hostkey_fingerprint,2},{public_key,ssh_encode,2}},
          {{ranch_ssl,handshake,3},{ssl,ssl_accept,3}}]
   }

, #{ name => deprecated_functions
   , analysis => deprecated_functions
   , excl_apps =>
         [
         ]
   , excl_mods =>
         [
         ]
   , filters =>
         [{erl_tidy,module,2},
          {gen_fsm,format_log,1},
          {gen_fsm,format_log,2},
          {http_uri,decode,1},
          {http_uri,encode,1},
          {http_uri,parse,2},
          {pg2,create,1},
          {pg2,delete,1},
          {pg2,get_members,1},
          {pg2,join,2},
          {pg2,leave,2},
          {pg2,which_groups,0},
          {public_key,ssh_encode,2},
          {ssl,ssl_accept,3}]
   }
].
